package com.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.project.bean.OrderBean;
import com.project.bean.ProductBean;

import java.time.LocalDate;
import java.util.List;

/** 订单业务接口*/
public interface IOrderService {
    /**
     * 添加订单
     * 1、完成订单的添加
     * 2、按用户id，查询购物车集合
     * 3、将购物车集合进行遍历，循环添加订单的明细
     * 4、清空购物车
     * @param orderBean 订单对象
     */
    void addOrder(OrderBean orderBean);

    /**
     * 分页查询订单
     * @param pageNO 页码
     * @param userId 固定用户id
     * @return 分页对象 {订单号、订单总价、订单状态、下单时间}
     */
    IPage<OrderBean> findByItem(Integer pageNO,Integer userId);

    /**
     * 按订单id查询订单详情
     * @param orderId 订单id
     * @return - 对象 ：
     * - 订单信息{订单号、订单总价、订单状态、下单时间、 收货人、送货地址、收货人电话}
     * - 订单明细信息{订单明细id，商品id，商品名、单价、购买数量}
     */
    OrderBean findById(Integer orderId);

    /**
     * 展示所有订单
     * @return 订单集合
     */
    List<OrderBean> showAll();

    /**
     * 修改订单状态（结账）
     * @param orderId 订单id
     */
    void updateStatus(Integer orderId);

    /**
     * 管理员动态条件分页查询订单
     * @param pageNO 页码
     * @param status 状态
     * @param startDate 起始日期
     * @param endDate 结束日期
     * @return 分页对象{订单号、订单总价、订单状态、下单时间 }
     */
    IPage<ProductBean> cutByItem(Integer pageNO, String status, LocalDate startDate,LocalDate endDate);

    /**
     * 修改订单状态（发货）
     * @param orderId 订单id
     */
    void managerUpdateStatus(Integer orderId);

}
